summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2023-01-03 21:03:58 +0100
committerGitHub <noreply@github.com>2023-01-03 21:03:58 +0100
commit6f031f08fe72848574955202fd2043f32373901c (patch)
tree4fcc5cb894d6e23e499512621330ee76416c05f0
parentMerge pull request #9542 from abouvier/cmake-module-path (diff)
parentTAS: Immediately switch stick to TAS on input (diff)
downloadyuzu-6f031f08fe72848574955202fd2043f32373901c.tar
yuzu-6f031f08fe72848574955202fd2043f32373901c.tar.gz
yuzu-6f031f08fe72848574955202fd2043f32373901c.tar.bz2
yuzu-6f031f08fe72848574955202fd2043f32373901c.tar.lz
yuzu-6f031f08fe72848574955202fd2043f32373901c.tar.xz
yuzu-6f031f08fe72848574955202fd2043f32373901c.tar.zst
yuzu-6f031f08fe72848574955202fd2043f32373901c.zip
-rw-r--r--src/core/hid/emulated_controller.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp
index 5587ee097..71364c323 100644
--- a/src/core/hid/emulated_controller.cpp
+++ b/src/core/hid/emulated_controller.cpp
@@ -11,6 +11,11 @@
namespace Core::HID {
constexpr s32 HID_JOYSTICK_MAX = 0x7fff;
constexpr s32 HID_TRIGGER_MAX = 0x7fff;
+// Use a common UUID for TAS and Virtual Gamepad
+constexpr Common::UUID TAS_UUID =
+ Common::UUID{{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xA5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}};
+constexpr Common::UUID VIRTUAL_UUID =
+ Common::UUID{{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}};
EmulatedController::EmulatedController(NpadIdType npad_id_type_) : npad_id_type(npad_id_type_) {}
@@ -348,10 +353,6 @@ void EmulatedController::ReloadInput() {
}
}
- // Use a common UUID for TAS
- static constexpr Common::UUID TAS_UUID = Common::UUID{
- {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xA5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}};
-
// Register TAS devices. No need to force update
for (std::size_t index = 0; index < tas_button_devices.size(); ++index) {
if (!tas_button_devices[index]) {
@@ -377,10 +378,6 @@ void EmulatedController::ReloadInput() {
});
}
- // Use a common UUID for Virtual Gamepad
- static constexpr Common::UUID VIRTUAL_UUID = Common::UUID{
- {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}};
-
// Register virtual devices. No need to force update
for (std::size_t index = 0; index < virtual_button_devices.size(); ++index) {
if (!virtual_button_devices[index]) {
@@ -780,7 +777,12 @@ void EmulatedController::SetStick(const Common::Input::CallbackStatus& callback,
// Only read stick values that have the same uuid or are over the threshold to avoid flapping
if (controller.stick_values[index].uuid != uuid) {
- if (!stick_value.down && !stick_value.up && !stick_value.left && !stick_value.right) {
+ const bool is_tas = uuid == TAS_UUID;
+ if (is_tas && stick_value.x.value == 0 && stick_value.y.value == 0) {
+ return;
+ }
+ if (!is_tas && !stick_value.down && !stick_value.up && !stick_value.left &&
+ !stick_value.right) {
return;
}
}